//
//  AppDelegate.swift
//  EasyDana
//
//  Created by mac on 2024/10/8.
//

import UIKit
import AdSupport
import AppTrackingTransparency
import FBSDKCoreKit
import SVProgressHUD
import IQKeyboardManagerSwift
@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        UIImage.swizzle()
        UILabel.swizzle()
        UIButton.swizzle()
        UITextField.swizzle()
        Task {
            do {
                try await HTTPManager.default.enumerateServer()
            } catch {
                
            }
        }
        IQKeyboardManager.shared.enable = true
        UploadStasticManager.default.uploadDataWhenLaunchAndHome(home: false)
        self.configNaviBarStyle()
        SVProgressHUD.setDefaultStyle(.dark)
        SVProgressHUD.setDefaultMaskType(.clear)
        SVProgressHUD.setDefaultAnimationType(.native)
        ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
        return true
    }
    
    private func configNaviBarStyle() {
        let appearance = UINavigationBar.appearance()
        appearance.titleTextAttributes = [
            .font: UIFont(name: "Righteous-Regular", size: 16)!
        ]
        let backButtonAppearance = UINavigationBar.appearance()
        backButtonAppearance.backIndicatorImage = UIImage(named: "navi_back")
        backButtonAppearance.backIndicatorTransitionMaskImage = UIImage(named: "navi_back")
        UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffset(horizontal: -1000, vertical: 0), for: .default)
    }
    
    func applicationDidBecomeActive(_ application: UIApplication) {
        if #available(iOS 14, *) {
            ATTrackingManager.requestTrackingAuthorization { status in
                
            }
        } else {
            // Fallback on earlier versions
        }
    }

    // MARK: UISceneSession Lifecycle

    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        // Called when a new scene session is being created.
        // Use this method to select a configuration to create the new scene with.
        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
    }
    
    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        ApplicationDelegate.shared.application(
                    application,
                    open: url,
                    sourceApplication: sourceApplication,
                    annotation: annotation
                )
    }
//    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
//        ApplicationDelegate.shared.application(app, open: url)
//    }

    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
        // Called when the user discards a scene session.
        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
    }


}

